package xin.marcher.module.quality.converter;

import org.mapstruct.Mapper;
import xin.marcher.module.quality.domain.dto.ItemQualityControlDataDTO;
import xin.marcher.module.quality.domain.dto.ItemQualityControlResultDTO;
import xin.marcher.module.quality.domain.dto.ItemQualityControlSurveyDTO;
import xin.marcher.module.quality.domain.dto.ItemQualityControlSurveyTaskDTO;
import xin.marcher.module.quality.domain.entity.*;

import java.util.List;

/**
 * 品控对象克隆
 */
@Mapper(componentModel = "spring")
public interface ItemQualityControlConverter {
    /**
     * 风险商品数据DO list -> DTO
     *
     * @param results
     * @return
     */
    List<ItemQualityControlDataDTO> riskDataListEntityToDTO(List<ItemQualityControlDataDO> results);

    /**
     * do -> dto
     *
     * @param itemQualityControlResultDO
     * @return
     */
    ItemQualityControlResultDTO entityToDTO(ItemQualityControlResultDO itemQualityControlResultDO);

    /**
     * dto -> do
     *
     * @param itemQualityControlResultDTO
     * @return
     */
    ItemQualityControlDataDO dtoToEntity(ItemQualityControlResultDTO itemQualityControlResultDTO);

    /**
     * 风险商品数据对象转换为调查池数据对象
     *
     * @param itemQualityControlDataDO
     * @return
     */
    ItemQualityControlSurveyDO convertQualityData(ItemQualityControlDataDO itemQualityControlDataDO);

    /**
     * 风险商品数据对象转换为白名单数据对象
     *
     * @param itemQualityControlDataDO
     * @return
     */
    ItemQualityControlWhitelistDO convertQualityWhitelist(ItemQualityControlDataDO itemQualityControlDataDO);

    /**
     * 调查池数据对象转换为调查任务数据对象
     *
     * @param itemQualityControlSurveyDO
     * @return
     */
    ItemQualityControlSurveyTaskDO convertQualityTask(ItemQualityControlSurveyDO itemQualityControlSurveyDO);

    /**
     * 调查池数据DO list -> DTO
     *
     * @param records
     * @return
     */
    List<ItemQualityControlSurveyDTO> surveyPoolListEntityToDTO(List<ItemQualityControlSurveyDO> records);

    /**
     * 调查任务数据DO list ->
     *
     * @param records
     * @return
     */
    List<ItemQualityControlSurveyTaskDTO> surveyTaskListEntityToDTO(List<ItemQualityControlSurveyTaskDO> records);
}
